package com.nlx.notes.module.service.flow;

import com.nlx.notes.module.bean.dto.FlowPageQueryDTO;
import com.nlx.notes.module.bean.dto.file.excel.BillRecordDTO;
import com.nlx.notes.module.bean.dto.flow.FlowEditDTO;
import com.nlx.notes.module.bean.vo.DayFlowViewVo;
import com.nlx.notes.module.bean.vo.FlowOverviewVo;
import com.nlx.notes.module.bean.vo.PageResultVo;
import com.nlx.notes.module.bean.vo.flow.FlowDetailVO;
import com.nlx.notes.module.bean.vo.flow.FlowQueryOverviewVO;
import com.nlx.notes.module.bean.vo.flow.FlowRecordVO;

import java.util.List;

public interface FlowManageService {


    /**
     * 流水总概览
     * @param userId 用户id
     * @return FlowOverviewVo
     */
    FlowOverviewVo flowOverview(Long userId,Long bookId );

    /**
     * 查询流水分页数据
     * @param flowPageQueryDTO 参数
     * @return DayFlowViewVo
     */
    PageResultVo<DayFlowViewVo> flowPage(FlowPageQueryDTO flowPageQueryDTO);


    /**
     * 删除流水
     * @param id 流水id
     * @param userId 用户id
     * @return boolean
     */
    boolean deleteFlow(Long id, Long userId);

    /**
     * 查询流水的橄榄数据
     * @param flowPageQueryDTO 参数
     * @return FlowQueryOverviewVO
     */
    FlowQueryOverviewVO flowQueryOverview(FlowPageQueryDTO flowPageQueryDTO);

    /**
     * 获取流水的详情
     * @param flowId 流水id
     * @param userId 用户id
     * @return FlowDetailVO
     */
    FlowDetailVO detail(Long flowId, Long userId);

    /**
     * 编辑流水
     * @param flowEditDTO 参数
     * @return FlowDetailVO
     */
    FlowDetailVO edit(FlowEditDTO flowEditDTO);

    /**
     * 查询某天的流水信息
     * @param dayDate 日期
     * @param userId 用户id
     * @return DayFlowViewVo
     */
    DayFlowViewVo findFlowDay(String dayDate,Long bookId, Long userId);

    /**
     * 查询月份的流水信息
     * @param month 月份
     * @param userId 用户id
     * @return DayFlowViewVo
     */
    List<DayFlowViewVo> findFlowMonth(String month,Long bookId, Long userId);
}
